S3 オブジェクトの有効期限をAWS CLIで確認する
S3 バケットのライフサイクルポリシーで、オブジェクトを他のストレージクラスに移動やオブジェクトをアーカイブ、オブジェクトの削除を定義することができます。
このライフサイクルルールを設定したオブジェクトの有効期限を head-object で確認することができますのでご紹介します。
バケットにライフサイクルが設定されているか確認
note: ライフサイクルの設定についてはS3 バケットのライフサイクルポリシーを作成する方法 を参考にしてください。
ライフサイクルは get-bucket-lifecycle-configuration で確認できます。
$ aws s3api get-bucket-lifecycle-configuration --bucket ${bucket_name}
{ "Rules": [ { "Expiration": { "Days": 60 }, "ID": "lifecycle-test-rule", "Filter": { "Prefix": "" }, "Status": "Enabled", "NoncurrentVersionExpiration": { "NoncurrentDays": 30 }, "AbortIncompleteMultipartUpload": { "DaysAfterInitiation": 7 } } ] }
今回の例では60日後にオブジェクトが削除されます。
オブジェクトの有効期限を確認する
オブジェクトの有効期限は head-object で確認できます。
$ aws s3api head-object --bucket ${bucket_name} --key ${key}
{ "AcceptRanges": "bytes", "Expiration": "expiry-date=\"Sun, 14 Oct 2018 00:00:00 GMT\", rule-id=\"lifecycle-test-rule\"", "LastModified": "Tue, 14 Aug 2018 19:57:04 GMT", "ContentLength": 641, "ETag": "\"f4cb543f3d9a2fcf9203dc39598c7d88\"", "VersionId": "null", "ContentEncoding": "utf-8", "ContentType": "text/plane", "ServerSideEncryption": "AES256", "Metadata": {} }
Expiration
からオブジェクトの有効期限が確認することができました。
note:
LastModified
が Tue, 14 Aug 2018 19:57:04 GMT ですが、Expiration
が Sun, 14 Oct 2018 00:00:00 GMT になっているのは以下ドキュメントを参照してください。
ライフサイクル設定の要素 | ライフサイクルルール: オブジェクトの存在時間に基づく
Amazon S3 は、ルールに指定された日数をオブジェクトの次の新しいバージョンが作成された時間に加算し、得られた日時を翌日の午前 00:00 (UTC) に丸めることで、時間を算出します。たとえば、バケット内のオブジェクトの最新バージョンが 2014 年 1 月 1 日午前 10 時 30 分 (UTC) に作成されており、2014 年 1 月 15 日午前 10 時 30 分 (UTC) にそのバージョンに代わる次の新しいバージョンが作成された場合、移行ルールに 3 日を指定していると、オブジェクトの移行日は 2014 年 1 月 19 日 0 時 0 分 (UTC) になります。
まとめ
S3 オブジェクトの有効期限をAPIで確認する方法をご紹介しました。APIで取得できるので確認し易いと思います。